<!-- HTML header for doxygen 1.8.12-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NVIDIAGeForceExperienceSDK: C:/u/workspace/dev/sdkwinauto/sdkclient/include/gfesdk/isdk.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">NVIDIAGeForceExperienceSDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('isdk_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">isdk.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;gfesdk/os_defines.h&gt;</code><br />
<code>#include &lt;<a class="el" href="sdk__types_8h_source.html">gfesdk/sdk_types.h</a>&gt;</code><br />
<code>#include &lt;gfesdk/sdk_types_ipc.h&gt;</code><br />
<code>#include &lt;gfesdk/config.h&gt;</code><br />
<code>#include &quot;stdint.h&quot;</code><br />
</div>
<p><a href="isdk_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a95b3999b5808922e29a36375c22014b8"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#a95b3999b5808922e29a36375c22014b8">NVGSDK_Create</a> (NVGSDK_HANDLE **handle, <a class="el" href="struct_n_v_g_s_d_k___create_input_params.html">NVGSDK_CreateInputParams</a> const *inParams, <a class="el" href="struct_n_v_g_s_d_k___create_response.html">NVGSDK_CreateResponse</a> *outParams)</td></tr>
<tr class="separator:a95b3999b5808922e29a36375c22014b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab63d1f433313209b1febbf5736b61463"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#ab63d1f433313209b1febbf5736b61463">NVGSDK_Release</a> (NVGSDK_HANDLE *handle)</td></tr>
<tr class="separator:ab63d1f433313209b1febbf5736b61463"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5beaa7808f8dfc4660f5a0d4f8bccb3"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#af5beaa7808f8dfc4660f5a0d4f8bccb3">NVGSDK_Poll</a> (NVGSDK_HANDLE *handle)</td></tr>
<tr class="separator:af5beaa7808f8dfc4660f5a0d4f8bccb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a823df4f563527040a016bab8298869c5"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#a823df4f563527040a016bab8298869c5">NVGSDK_SetLogLevel</a> (<a class="el" href="sdk__types_8h.html#a8ad6f8cbc3c4ba6587912a4a4638d857">NVGSDK_LogLevel</a> fileLevel)</td></tr>
<tr class="separator:a823df4f563527040a016bab8298869c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc7b2b775f0ffaf80b2b5a988c4d6d11"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#afc7b2b775f0ffaf80b2b5a988c4d6d11">NVGSDK_AttachLogListener</a> (<a class="el" href="sdk__types_8h.html#ab13929e496dd1748a31088399519252a">NVGSDK_LoggingCallback</a> callback)</td></tr>
<tr class="separator:afc7b2b775f0ffaf80b2b5a988c4d6d11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a742af01ab93d41b3aa9579df90c6c00f"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#a742af01ab93d41b3aa9579df90c6c00f">NVGSDK_SetListenerLogLevel</a> (<a class="el" href="sdk__types_8h.html#a8ad6f8cbc3c4ba6587912a4a4638d857">NVGSDK_LogLevel</a> level)</td></tr>
<tr class="separator:a742af01ab93d41b3aa9579df90c6c00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e4b6afcafe9ac91c00a95b7d72305e5"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT void NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#a3e4b6afcafe9ac91c00a95b7d72305e5">NVGSDK_RequestPermissionsAsync</a> (NVGSDK_HANDLE *handle, <a class="el" href="struct_n_v_g_s_d_k___request_permissions_params.html">NVGSDK_RequestPermissionsParams</a> const *params, <a class="el" href="sdk__types_8h.html#a1c5cd84ed88c70462c360a7268eb95ac">NVGSDK_EmptyCallback</a> callback, void *context)</td></tr>
<tr class="separator:a3e4b6afcafe9ac91c00a95b7d72305e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30ed8fc1b0066f8eae9078ab65b136de"><td class="memItemLeft" align="right" valign="top">NVGSDK_EXPORT void NVGSDKApi&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="isdk_8h.html#a30ed8fc1b0066f8eae9078ab65b136de">NVGSDK_GetUILanguageAsync</a> (NVGSDK_HANDLE *handle, <a class="el" href="sdk__types_8h.html#aa327c1a78bd452bd8edbcad7a4e4d86a">NVGSDK_GetUILanguageCallback</a> callback, void *context)</td></tr>
<tr class="separator:a30ed8fc1b0066f8eae9078ab65b136de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>C GFE SDK API </p>

<p>Definition in file <a class="el" href="isdk_8h_source.html">isdk.h</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a95b3999b5808922e29a36375c22014b8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_Create </td>
          <td>(</td>
          <td class="paramtype">NVGSDK_HANDLE **&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_n_v_g_s_d_k___create_input_params.html">NVGSDK_CreateInputParams</a> const *&#160;</td>
          <td class="paramname"><em>inParams</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_n_v_g_s_d_k___create_response.html">NVGSDK_CreateResponse</a> *&#160;</td>
          <td class="paramname"><em>outParams</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Allocates and initializes the SDK interface. This is a synchronous call and may take tens of milliseconds.</p>
<p>Importantly, the app must pass a list of required scopes to this call. This is analagous to an oauth2 type of flow. GfeSDK will choose to allocate certain resources based on this list. For example, passing NVGSDK_SCOPE_HIGHLIGHTS to this list will enable all of the calls starting with NVGSDK_Highlights_*. For more information on permissions, see <a class="el" href="index.html#section_permissions">Permissions</a>.</p>
<p>The next decision for the app is whether to accept asynchronous callbacks on a GfeSDK-controller thread, or to poll for callbacks on a game-controlled thread, usually the main game loop. See <a class="el" href="struct_n_v_g_s_d_k___create_input_params.html#a0bd7568c1cb3fad975562055b4581195">NVGSDK_CreateInputParams::pollForCallbacks</a> and <a class="el" href="index.html#section_threading">Threading</a>. When bringing the SDK up for the first time, it may be best to start with pollForCallbacks = false, until up and running, and then move to the more advanced polling model that gives control to the proper thread.</p>
<p>Finally, the app can pass in a callback to recieve notifications, and an opaque pointer that will be passed untouched to be received by the callback. See <a class="el" href="index.html#section_notifications">Notifications</a></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle[out]</td><td>- Will be populated by the created SDK on success </td></tr>
    <tr><td class="paramname">inParams[in]</td><td>- Input parameters for SDK creation </td></tr>
    <tr><td class="paramname">outParams[out]</td><td>- Output params for SDK creation, will be populated on return. On fatal error, this will be NULL</td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">NVGSDK_SUCCESS</td><td>- SDK was successfully created and returned </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_OUT_OF_MEMORY</td><td>- Could not allocate system resources for handle </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_INVALID_PARAMETER</td><td>- Invalid handle pointer provided, or no app name provided </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_LOAD_LIBRARY</td><td>- SDK wasn't able to load dependencies. Perhaps GFE is not installed. </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_CONNECTION</td><td>- SDK is not able to contact GFE backend service </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_UNHANDLED_EXCEPTION</td><td>- SDK ran into an unhandled error and caught an exception before it returned to client code </td></tr>
    <tr><td class="paramname">NVGSDK_IPC_SUCCESS_OLD_SDK</td><td>- SDK will work properly, but the GfeSDK DLL version is old. See <a class="el" href="index.html#section_version">Versioning</a> </td></tr>
    <tr><td class="paramname">NVGSDK_IPC_SUCCESS_OLD_GFE</td><td>- SDK should work properly, but the backend GFE version is older, and may not provide the latest features. See <a class="el" href="index.html#section_version">Versioning</a> </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_GFE_VERSION</td><td>- GFE version is too old for communication. User must upgrade GFE. See <a class="el" href="index.html#section_version">Versioning</a> </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_SDK_VERSION</td><td>- GfeSDK DLL version is too old. Game must distribute a newer version. See <a class="el" href="index.html#section_version">Versioning</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab63d1f433313209b1febbf5736b61463"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_Release </td>
          <td>(</td>
          <td class="paramtype">NVGSDK_HANDLE *&#160;</td>
          <td class="paramname"><em>handle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Release the main SDK interface after create.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pHandle[in]</td><td>- SDK Handle to release</td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">NVGSDK_SUCCESS</td><td>- SDK was successfully released </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_INVALID_PARAMETER</td><td>- Invalid handle provided </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_UNHANDLED_EXCEPTION</td><td>- SDK ran into an unhandled error and caught an exception before it returned to client code </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af5beaa7808f8dfc4660f5a0d4f8bccb3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_Poll </td>
          <td>(</td>
          <td class="paramtype">NVGSDK_HANDLE *&#160;</td>
          <td class="paramname"><em>handle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>When <a class="el" href="struct_n_v_g_s_d_k___create_input_params.html#a0bd7568c1cb3fad975562055b4581195">NVGSDK_CreateInputParams::pollForCallbacks</a> is set to true, it becomes the app's responsibility to make calls to this function to recieve asynchronous callbacks. See <a class="el" href="index.html#section_async">Asynchronous Calls</a> for more information.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle[in]</td><td>- Valid SDK handle returned by NVGSDK_Create </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a823df4f563527040a016bab8298869c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_SetLogLevel </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sdk__types_8h.html#a8ad6f8cbc3c4ba6587912a4a4638d857">NVGSDK_LogLevel</a>&#160;</td>
          <td class="paramname"><em>fileLevel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Adjusts the logging level of GfeSDK. Log level documentation is found at <a class="el" href="sdk__types_8h.html#a8ad6f8cbc3c4ba6587912a4a4638d857">NVGSDK_LogLevel</a>. See <a class="el" href="index.html#section_log">Logging</a> for more information.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fileLvl[in]</td><td>- Logs at or above this priority will be written to logfile </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="afc7b2b775f0ffaf80b2b5a988c4d6d11"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_AttachLogListener </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sdk__types_8h.html#ab13929e496dd1748a31088399519252a">NVGSDK_LoggingCallback</a>&#160;</td>
          <td class="paramname"><em>callback</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Pass in a callback function in order to receive the log messages that GfeSDK is recording. The primary usecase for this is to get the GfeSDK logs into the logfile of a game engine. See <a class="el" href="index.html#section_log">Logging</a> for more information.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>- Will be called back with log priority and message </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a742af01ab93d41b3aa9579df90c6c00f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_SetListenerLogLevel </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sdk__types_8h.html#a8ad6f8cbc3c4ba6587912a4a4638d857">NVGSDK_LogLevel</a>&#160;</td>
          <td class="paramname"><em>level</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Adjusts the listener logging level of GfeSDK. This affects calls to the callback given to <a class="el" href="isdk_8h.html#afc7b2b775f0ffaf80b2b5a988c4d6d11">NVGSDK_AttachLogListener</a>. See <a class="el" href="index.html#section_log">Logging</a> for more information.</p>
<p>See <a class="el" href="sdk__types_8h.html#a8ad6f8cbc3c4ba6587912a4a4638d857">NVGSDK_LogLevel</a> for a list of possible levels.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">level[in]</td><td>- Logs at or above this priority will be sent to callback </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3e4b6afcafe9ac91c00a95b7d72305e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT void NVGSDKApi NVGSDK_RequestPermissionsAsync </td>
          <td>(</td>
          <td class="paramtype">NVGSDK_HANDLE *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_n_v_g_s_d_k___request_permissions_params.html">NVGSDK_RequestPermissionsParams</a> const *&#160;</td>
          <td class="paramname"><em>params</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="sdk__types_8h.html#a1c5cd84ed88c70462c360a7268eb95ac">NVGSDK_EmptyCallback</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>context</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Asks the user for permissions needed by the app. This will open up the <a class="el" href="index.html#section_igo">In Game Overlay</a>.</p>
<p>If the user has already decided to grant or deny permissions for these scopes, no overlay will be displayed, and the corresponding return value will be passed into the callback.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">callback[in]</td><td>- Callback return function as described by <a class="el" href="index.html#section_async">Asynchronous Calls</a> </td></tr>
    <tr><td class="paramname">context[in]</td><td>- Opaque context pointer as described by <a class="el" href="index.html#section_async">Asynchronous Calls</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a30ed8fc1b0066f8eae9078ab65b136de"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVGSDK_EXPORT void NVGSDKApi NVGSDK_GetUILanguageAsync </td>
          <td>(</td>
          <td class="paramtype">NVGSDK_HANDLE *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="sdk__types_8h.html#aa327c1a78bd452bd8edbcad7a4e4d86a">NVGSDK_GetUILanguageCallback</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>context</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the language set by the user for the onscreen UI</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle[in]</td><td>- Valid SDK handle returned by NVGSDK_Create </td></tr>
    <tr><td class="paramname">language[out]</td><td>- Will be populated on NVGSDK_SUCCESS</td></tr>
    <tr><td class="paramname">callback[in]</td><td>- Callback return function as described by <a class="el" href="index.html#section_async">Asynchronous Calls</a> </td></tr>
    <tr><td class="paramname">context[in]</td><td>- Opaque context pointer as described by <a class="el" href="index.html#section_async">Asynchronous Calls</a></td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">NVGSDK_SUCCESS</td><td>- Call was successful, and lang was populated with the result </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_INVALID_PARAMETER</td><td>- Invalid handle provided </td></tr>
    <tr><td class="paramname">NVGSDK_ERR_UNHANDLED_EXCEPTION</td><td>- SDK ran into an unhandled error and caught an exception before it returned to client code </td></tr>
    <tr><td class="paramname">NVGSDK_IPC_ERR_NOT_SET</td><td>- The user has not chosen a language and is using the default </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.12-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_4522e853adfb3285c34ceee6be627ffe.html">sdkclient</a></li><li class="navelem"><a class="el" href="dir_37f49c9d6a230916a5077fbd270eac2a.html">include</a></li><li class="navelem"><a class="el" href="dir_eb56eea0ff74c30c2a48b22915222057.html">gfesdk</a></li><li class="navelem"><a class="el" href="isdk_8h.html">isdk.h</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    doxygen</a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
